package com.mac.service;

import com.mac.mapper.EducationalResourcesMapper;
import com.mac.pojo.EducationalResources;
import com.mac.util.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
@SuppressWarnings({"all"})
/**
 * 提供教育资源相关业务操作的服务类。
 * 该类实现了EducationalResourcesMapper接口，用于执行与教育资源相关的数据库操作。
 */
public class EducationalResourcesService implements EducationalResourcesMapper {
    // 使用SLF4J记录日志
    private static final Logger LOGGER = LoggerFactory.getLogger("EducationalResourcesService.Class");

    // SqlSessionFactory工厂，用于创建SqlSession对象
    SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();

    /**
     * 获取所有教育资源的方法。
     * @return 返回包含所有教育资源的ArrayList集合。
     */
    @Override
    public ArrayList<EducationalResources> selectAllEducationalresources() {
        // 通过工厂创建SqlSession对象
        SqlSession sqlSession = factory.openSession();

        // 获取教育资源映射器
        EducationalResourcesMapper educationalResourcesMapper = sqlSession.getMapper(EducationalResourcesMapper.class);

        ArrayList<EducationalResources> educationalResources;
        try {
            // 调用映射器的方法，获取所有教育资源
            educationalResources = educationalResourcesMapper.selectAllEducationalresources();
            // 关闭SqlSession
            sqlSession.close();
            // 记录操作成功的日志
            LOGGER.info("selectAllEducationalresources()-> succeed", educationalResources);
            return educationalResources;
        } catch (Exception e) {
            // 发生异常时关闭SqlSession
            sqlSession.close();
            // 记录操作失败的日志
            LOGGER.error("selectAllEducationalresources() -> failed", e);
            return null;
        }
    }

    /**
     * 根据教育资源ID获取单个教育资源的方法。
     * @param resourceId 教育资源ID。
     * @return 返回包含单个教育资源的对象。
     */
    @Override
    public EducationalResources selectOneByeducationalresourcesId(int resourceId) {
        // 通过工厂创建SqlSession对象
        SqlSession sqlSession = factory.openSession();
        // 获取教育资源映射器
        EducationalResourcesMapper educationalResourcesMapper = sqlSession.getMapper(EducationalResourcesMapper.class);
        EducationalResources educationalResources;

        try {
            // 调用映射器的方法，根据ID获取单个教育资源
            educationalResources = educationalResourcesMapper.selectOneByeducationalresourcesId(resourceId);
            // 关闭SqlSession
            sqlSession.close();
            // 记录操作成功的日志
            LOGGER.info("selectOneByeducationalresourcesId() -> succeed", educationalResources);
            return educationalResources;
        } catch (Exception e) {
            // 发生异常时关闭SqlSession
            sqlSession.close();
            // 记录操作失败的日志
            LOGGER.error("selectOneByeducationalresourcesId()  -> failed", e);
            return null;
        }
    }
}